<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 7.1.2" />
<style type="text/css">
/* Debug borders */
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
/*
  border: 1px solid red;
*/
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
}

strong {
  font-weight: bold;
}

tt {
  color: navy;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  font-family: sans-serif;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1 {
  border-bottom: 2px solid silver;
}
h2 {
  border-bottom: 2px solid silver;
  padding-top: 0.5em;
}

div.sectionbody {
  font-family: serif;
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

pre {
  padding: 0;
  margin: 0;
}

span#author {
  color: #527bbd;
  font-family: sans-serif;
  font-weight: bold;
  font-size: 1.2em;
}
span#email {
}
span#revision {
  font-family: sans-serif;
}

div#footer {
  font-family: sans-serif;
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
div#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
div#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

div#preamble,
div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-right: 10%;
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.5em;
  margin-bottom: 2.5em;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  font-family: sans-serif;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid silver;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid silver;
  background: #f4f4f4;
  padding: 0.5em;
}

div.quoteblock > div.content {
  padding-left: 2.0em;
}

div.attribution {
  text-align: right;
}
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 2px solid silver;
}

div.exampleblock > div.content {
  border-left: 2px solid silver;
  padding: 0.5em;
}

div.verseblock div.content {
  white-space: pre;
}

div.imageblock div.content { padding-left: 0; }
div.imageblock img { border: 1px solid silver; }
span.image img { border-style: none; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: italic;
}
dd > *:first-child {
  margin-top: 0;
}

ul, ol {
    list-style-position: outside;
}
ol.olist2 {
  list-style-type: lower-alpha;
}

div.tableblock > table {
  border: 3px solid #527bbd;
}
thead {
  font-family: sans-serif;
  font-weight: bold;
}
tfoot {
  font-weight: bold;
}

div.hlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
td.hlist1 {
  vertical-align: top;
  font-style: italic;
  padding-right: 0.8em;
}
td.hlist2 {
  vertical-align: top;
}

@media print {
  div#footer-badges { display: none; }
}
include1::./stylesheets/xhtml11-manpage.css[]
/* Workarounds for IE6's broken and incomplete CSS2. */

div.sidebar-content {
  background: #ffffee;
  border: 1px solid silver;
  padding: 0.5em;
}
div.sidebar-title, div.image-title {
  font-family: sans-serif;
  font-weight: bold;
  margin-top: 0.0em;
  margin-bottom: 0.5em;
}

div.listingblock div.content {
  border: 1px solid silver;
  background: #f4f4f4;
  padding: 0.5em;
}

div.quoteblock-content {
  padding-left: 2.0em;
}

div.exampleblock-content {
  border-left: 2px solid silver;
  padding-left: 0.5em;
}
</style>
<title>YASSS (1)</title>
</head>
<body>
<div id="header">
<h1>
YASSS (1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>YasSS -
   Yet another (simple|stupid) Sudoku Solver - solves and generates Sudokus
</p>
</div>
</div>
<h2>SYNOPSIS</h2>
<div class="sectionbody">
<p><strong>yasss</strong> [-aCcgmsuv]</p>
<p><strong>yasss</strong> -h|--help</p>
<p><strong>yasss</strong> -V|--version</p>
<p><strong>yasss</strong> -g|--generate[=num]</p>
</div>
<h2>DESCRIPTION</h2>
<div class="sectionbody">
<p>YasSSS solves Sudokus. Without any options it reads them one per line from
standard input, solves them and prints them to stanard output (in the same
format). If there are multiple solutions, only the first found is taken.</p>
<p>The Sudokus are read one per line, with any character other then <strong>1</strong>..<strong>9</strong>
treated as an empty cell. If the line is shorter than 81 charaters, all the
missing number are treated as empty.</p>
<p>This behaviour can be modified be several options.</p>
</div>
<h2>OPTIONS</h2>
<div class="sectionbody">
<dl>
<dt>
-a, --answer
</dt>
<dd>
<p>
        Force the solution to be printed. When one of the <em>-c</em>, <em>-s</em>-Options
        is given, the default behaviour is to supress the output of the
        solution.
</p>
</dd>
<dt>
-c, --count
</dt>
<dd>
<p>
        Searches for multiple solutions and prints the number of distinct
        solutions. You should note that it takes a long time if there are
        many solutions.
</p>
</dd>
<dt>
-C, --canonical
</dt>
<dd>
<p>
        Transforms the given Sudoku to its canonical form, that means to the
        lexicographic least of all transformations that don't change the
        Sudoku's logic. This option is applied before all others.
</p>
</dd>
<dt>
-g, --generate[=num]
</dt>
<dd>
<p>
        Generates a Sudoku, if <em>num</em> is given, <em>num</em> Sudokus are generated.
        The generated Sudokus typically have 27 &#8230; 30 numbers given.
        If this option is given, all other options are ignored.
</p>
</dd>
<dt>
-m, --minimize
</dt>
<dd>
<p>
        Delete numbers from the given Sudokus as far as possible without
        making the Sudoku ambigous
</p>
</dd>
<dt>
-s, --score
</dt>
<dd>
<p>
        Prints a difficulty rating for the given Sudoku. Higher numbers mean
        more difficult Sudokus. Currently this score is 1 for each missing
        number and 5 for each backtracking step taken. In this mode a more
        advanced search is disabled to obtain more acurate results.
        See section BUGS below&#8230;
</p>
</dd>
<dt>
-S, --svg
</dt>
<dd>
<p>
        Print all Sudokus as svg files to standard output. These Sudokus are
        nicely formated. However if more then one Sudoku is printed out, you
        have to take care for yourself to split it into multiple files.
</p>
</dd>
<dt>
-u, --uniq
</dt>
<dd>
<p>
        Prints a message if the Sudoku has a uniq solution. This is much
        faster then --count if there are lots of solutions
</p>
</dd>
<dt>
-v, --verbose
</dt>
<dd>
<p>
        Currently igonored
</p>
</dd>
</dl>
</div>
<h2>BUGS</h2>
<div class="sectionbody">
<ul>
<li>
<p>
--score option prints out somewhat arbitrary results. It's output
        depends on the number of backtracking steps taken to solve the
        Sudoku, which means that it depends on the representation given. For
        example, you can transpose a Sudoku and get a different result,
        although the transposed Sudoku follows the same logic.
</p>
</li>
<li>
<p>
Input sanitation is only performed basically and not very well
        tested. You should not allow a possibly
        hostile user (e.g. a CGI script) to execute yasss if you haven't
        checked it's input carefully.
</p>
</li>
<li>
<p>
If called twice a microsecond it generates the same Sudoku due to the
        way the random number generator is initialized
</p>
</li>
</ul>
</div>
<h2>AUTHOR</h2>
<div class="sectionbody">
<p>Written by Moritz Andreas Lenz, &lt;<a href="mailto:moritz@faui2k3.org">moritz@faui2k3.org</a>&gt;</p>
</div>
<h2>RESOURCES</h2>
<div class="sectionbody">
<p>Project page: http://moritz.faui2k3.org/yasss</p>
<p>Google Code project page: http://code.google.com/p/yasss</p>
<p>More on Sudoku: http://sudokugarden.de/ (English and German)</p>
</div>
<h2>COPYING</h2>
<div class="sectionbody">
<p>Copyright (C) 2006 <a href="http://moritz.faui2k3.org/">Moritz Andreas Lenz</a>. Free use of this software is granted
under the terms of the GNU General Public License (GPL) or under the Artistic
License. See the file LICENSE for details.</p>
</div>
<div id="footer">
<div id="footer-text">
Last updated 27-Nov-2006 08:15:01 BST
</div>
</div>
</body>
</html>
